package com.komeri.komeriapl;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface.OnClickListener;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Configuration;

/**
 * ユーティリティクラス
 */
public final class CommonUtility {

	private CommonUtility() {
	}
	
	/**
	 * アラートダイアログを表示する
	 * @param activity アラートダイアログを表示するアクティビティ
	 * @param messageId メッセージに表示する文言のID
	 * @param positiveButtonId ポジティブボタンに表示する文言のID(0の場合、ボタンを表示しない)
	 * @param negativeButtonId　ネガティブボタンに表示する文言のID(0の場合、ボタンを表示しない)
	 * @param positiveListener　ポジティブボタンのリスナー
	 * @param negativeListener ネガティブボタンのリスナー
	 */
	public static void showAlert(Activity activity,
								 int messageId, 
								 int positiveButtonId,
								 int negativeButtonId,
								 OnClickListener positiveListener,
								 OnClickListener negativeListener) {
		AlertDialog.Builder builder = new AlertDialog.Builder(activity);
		builder.setMessage(messageId);
		
		if (positiveButtonId != 0) {
			builder.setPositiveButton(positiveButtonId, positiveListener);
		}
		
		if (negativeButtonId != 0) {
			builder.setNegativeButton(negativeButtonId, negativeListener);
		}
		
		AlertDialog dialog = builder.create();
		dialog.setCanceledOnTouchOutside(false);	//ダイアログ外のタップではダイアログを閉じないようにする		
		dialog.show();
	}
	
	/**
	 * アラートダイアログを表示する(デバッグ用) 
	 * @param activity　アラートダイアログを表示するアクティビティ
	 * @param messageId メッセージ
	 */
	public static void showAlertForDebug(Activity activity, String message) {
		AlertDialog.Builder builder = new AlertDialog.Builder(activity);
		builder.setMessage(message);
		builder.setPositiveButton(activity.getString(R.string.ok), null);
		
		AlertDialog dialog = builder.create();
		dialog.show();
	}

	/**
	 * 画面サイズを取得する
	 *　*/
	public static int getScreenLayoutSize(Activity activity) {
		int size;
		int sizeMask = activity.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK;
		
		if (sizeMask == Configuration.SCREENLAYOUT_SIZE_SMALL) {
			size = Configuration.SCREENLAYOUT_SIZE_SMALL;
		}
		else if (sizeMask == Configuration.SCREENLAYOUT_SIZE_NORMAL) {
			size = Configuration.SCREENLAYOUT_SIZE_NORMAL;
		}
		else if (sizeMask == Configuration.SCREENLAYOUT_SIZE_LARGE) {
			size = Configuration.SCREENLAYOUT_SIZE_LARGE;
		}
		else if (sizeMask == Configuration.SCREENLAYOUT_SIZE_XLARGE) {
			size = Configuration.SCREENLAYOUT_SIZE_XLARGE;
		}
		else {
			size = Configuration.SCREENLAYOUT_SIZE_UNDEFINED;
		}
		
		return size;
	}
	
	/**
	 * アプリのバージョンを取得する
	 * @return アプリのバージョン
	 */
	public static String appVersion() {
		Context context = MyApplication.getAppContext();
		PackageInfo packageInfo = null;
		try {
			packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_META_DATA);
		} catch (NameNotFoundException e) {
			e.printStackTrace();
		}
		
		return packageInfo.versionName;
	}
}
